﻿#region Copyright Notice
// This file is part of GestionPedago.
// <description>
// Copyright (C) 2012 ENI Ecole Informatique
// 
// GestionPedago is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// <program> is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using GestionPedago.Services.ES.Modele;
using GestionPedago.Services.ES;

namespace GestionPedago.ViewModel {

    /// <summary>
    /// Cette classe représente la fenêtre principale.
    /// </summary>
    public class MainWindowVM : BaseViewModel
    {

        
        private StagiaireES pCurrentStagiaire;

        /// <summary>
        /// Le stagiaire sélectionné.
        /// </summary>
        public StagiaireES CurrentStagiaire
        {
            get { return pCurrentStagiaire; }
            set
            {
                if (value != null)
                {
                    pCurrentStagiaire = value;

                    if (pCurrentStagiaire.ListeEvenementPedagogique != null)
                        vmCartoucheStagiaire.ListeEvenementsPedagogique = new ObservableCollection<EvenementPedagogiqueES>(pCurrentStagiaire.ListeEvenementPedagogique);

                    if(pCurrentStagiaire.ListeAllPlanningIndividuelDetail != null) {
                        vmCartoucheStagiaire.Cours = new ObservableCollection<CoursES>();

                        List<CoursES> listeCours = new List<CoursES>();
                        foreach(PlanningIndividuelDetailES pid in pCurrentStagiaire.ListeAllPlanningIndividuelDetail) {
                            listeCours.Add(pid.Cours);
                        }

                        listeCours.Sort(new CoursESComparer());

                        foreach(CoursES coursES in listeCours) {
                            vmCartoucheStagiaire.Cours.Add(coursES);
                        }

                    }
                    string path = "";
                    if(pCurrentStagiaire.Repertoire != null && pCurrentStagiaire.Photo != null) path = Path.Combine(Properties.Settings.Default.PhotosPath, pCurrentStagiaire.Repertoire, pCurrentStagiaire.Photo);

                    if(String.IsNullOrWhiteSpace(pCurrentStagiaire.Photo) || !File.Exists(path))
                        pCurrentStagiaire.PhotoPath = "/GestionPedago;component/Resources/Images/user.png";
                    else
                        pCurrentStagiaire.PhotoPath = path;

                    RaisePropertyChanged("CurrentStagiaire");
                }
                
            }
        }

        /// <summary>
        /// Le menu de la fenêtre principale.
        /// </summary>
        public MainMenuVM vmMainMenu { get; set; }

        /// <summary>
        /// La barre d'outil de la fenêtre principale.
        /// </summary>
        public BarreOutilsVM vmBarreOutils { get; set; }

        /// <summary>
        /// La barre de status de la fenêtre principale.
        /// </summary>
        public BarreInfosVM vmBarreInfos { get; set; }

        /// <summary>
        /// Le cartouche stagiaire de la fenêtre principale.
        /// </summary>
        public CartoucheStagiaireVM vmCartoucheStagiaire { get; set; }

        /// <summary>
        /// Le conteneur des onglets de la fenêtre principale.
        /// </summary>
        public GestionnaireOngletsVM vmGestionnaireOnglets { get; set; }

        /// <summary>
        /// Constructeur de la fenêtre principale.
        /// </summary>
        public MainWindowVM() {
            vmBarreOutils = new BarreOutilsVM(this);
            vmBarreInfos = new BarreInfosVM(this);
            vmCartoucheStagiaire = new CartoucheStagiaireVM(this);
            vmGestionnaireOnglets = new GestionnaireOngletsVM(this);
            vmMainMenu = new MainMenuVM(this);



            if(CurrentStagiaire == null) {
                CurrentStagiaire = new StagiaireES();
                CurrentStagiaire.Nom = "NOM";
                CurrentStagiaire.Prenom = "Prenom";
                CurrentStagiaire.Adresse1 = "Adresse1";
                CurrentStagiaire.Adresse2 = "Adresse2";
                CurrentStagiaire.Adresse3 = "Adresse3";
                CurrentStagiaire.Codepostal = "00000";
                CurrentStagiaire.Ville = "Ville";
                CurrentStagiaire.Photo = "/GestionPedago;component/Resources/Images/user.png";
            }

        }
    }

}
